package com.tz.mapper;

import com.tz.entity.User;
import com.tz.entity.search.UserSearchPojo;
import org.apache.ibatis.annotations.Param;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;


/**
 * 本mapper用来处理登录
 *
 * @author Cunese
 * @date 17-12-29
 */
@MapperScan
public interface UserMapper {
    /**
     * 通过条件查询出所有用户
     * @param PageNow
     * @param PageSize
     * @param userSearchPojo
     * @return
     */
    List<User> selectUserByPage(@Param("pageNow") Integer PageNow, @Param("pageSize") Integer PageSize, @Param("search") UserSearchPojo userSearchPojo);
    /**
     * 用户数量
     * @return
     */
    Integer countUser(@Param("search") UserSearchPojo userSearchPojo);
    /**
     * 查询出所有用户
     * 为统计和筛选功能做准备
     *
     * @return 所有用户
     */
    List<User> selectAll(@Param("state") Integer state);

    /**
     * 查询出所有用户
     * 为统计和筛选功能做准备
     *
     * @return 所有用户
     */

    List<User> selectAllByRoleid(@Param("state") Integer state,@Param("rid") Long roid);

    /**
     * 批量重置密码
     *
     * @param ids 用户密码
     */
    void changeDefPassword(List<Long> ids);

    /**
     * 用户登陆
     *
     * @param username
     * @param username
     * @enable 1启用 0禁用
     */
    User selectUserByPassword(@Param("username") String username, @Param("password") String password);


    /**
     * 批量启用/禁用用户
     *
     * @param ids
     * @enable 1启用 0禁用
     */
    void changeBatchUserStatus(@Param("ids") List<Long> ids, @Param("enable") Integer enable);

    /**
     * 浏览用户
     *
     * @param id 用户id
     */
    User selectUserById(Long id);


    /**
     * 修改用户
     *
     * @param user 用户
     */
    void updateUser(User user);


    /**
     * 添加用户
     * param user 添加的用户 无id
     */
    void insertUser(User user);


}
